//TIP 要<b>运行</b>代码，请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。

//fun parseInt(c : Char) : Int? {
//
//    if (c >= '0' && c <= '9') {
//        return (c - '0')
//    }
//    return null
//}
//
//fun printProduct(c1 : Char, c2 : Char) {
//    val x = parseInt(c1)
//    val y = parseInt(c2)
//
//    if (x != null && y != null) {
//        println(x * y)
//    }
//    else {
//        println("'$c1' or '$c2' is not a number")
//    }
//}
//
//fun main()
//{
////    var list = listOf("a", "b", 1, 2, 4)
////    for (item in list) {
////        println(item)
////    }
//
////    when {
////        "a" in list -> println("a")
////        "1" in list -> println("\"1\"")
////        2 in list -> println("2")
////    }
//
////    println(parseInt(""))
//
//    printProduct('1', '2')
//    printProduct('a', 'd')
//
//}


//fun getStringLength(str : Any) : Int? {
////    if (str !is String) return null
////
////    return str.length
//
//    if (str is String && str.length > 0) {
//        return str.length
//    }
//
//    return null
//}
//
//fun main() {
//    val len1 = getStringLength("aaaa")
//    val len2 = getStringLength(1111)
//
//    println("len1 = $len1")
//    println("Len2 = $len2")
//}


//fun main() {
//    val oneLong = 1L
//    val res = when  {
//        (oneLong is Long) -> "Long"
//        else -> "Unknown"
//    }
//    println(res)
//
//    val oneMillion = 1_000_000
//    println(oneMillion)
//}


// 装箱
//fun main() {
//    // Java 会对 -128~127 之间的值进行缓存
//    val a = 10
//    val boxedA : Int? = a
//    val anotherBoxedA : Int? = a
//
//    println(boxedA == anotherBoxedA) // == -- 结构相等 / 值相等
//    println(boxedA === anotherBoxedA) // === -- 引用相等 // true -- 因为使用了缓存
//
//    val b = 1000
//    val boxedB : Int? = b
//    val anotherBoxedB : Int? = b
//
//    println(boxedB == anotherBoxedB)
//    println(boxedB === anotherBoxedB) // false -- 超出 Java 缓存范围，创建新的实例，引用不相等
//}
//
//fun main() {
////    val byte : Byte = 1
//////    val intAssignedByte : Int = byte // error : Byte 不是 Int 的子类
////    val intConvertedByte : Int = byte.toInt()
////    println(intConvertedByte)
//
////    val l = 1L + 3 // Long + Int -> Long
////    println(l is Long)
////
////    val x = 5L / 2
//////    println(x == 2) // error -- Int 不是 Long 的子类，无法直接比较
////    println(x == 2L) // true
//
////    val x = 5 / 2.toDouble()
////    println(x == 2.5)
//
//    val num = 'a'.digitToInt(16) // 十六进制
//    println(num)
//
//    println('a'.code) // ASCII 码
//
//
//}
//

fun main() {
//    val str = "123 abc @#$"
////    for (c in str) {
////        print(c)
////    }
//
//    println(str.uppercase()) // 将 abc 转为 ABC
//    println(str)

    val text = """
        for (c in "abc") {
            print(c)
        }
    """.trimIndent()

//    println(text)


    val letters = listOf('a', 'b', 'c')
//    println("Letters is $letters") // Letters is [a, b, c]

    val s = "abc"
    println("$s.length is ${s.length}") // abc.length is 3

    println("${'$'}_aaa")
}
